package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;

import cn.itcast.service.company.CompanyService;
import com.alibaba.dubbo.config.annotation.Reference;
import lombok.extern.log4j.Log4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.lang.String;
import java.util.List;

@Controller
@RequestMapping("company")
@Log4j
public class CompanyController {

    /**
     * 列表查询
     * 请求路径：http://localhost:8080/company/list
     * 响应路径：/WEB-INF/pages/company/company-list.jsp
     */
   @Reference
    private CompanyService companyService;
    @RequestMapping("/list")
    public String list(Model model){
        try {
            log.info("执行企业列表查询的开始....");
            List<Company> list = companyService.findAll();
            model.addAttribute("list",list);
            log.info("执行企业列表查询的结束....");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("执行企业列表查询出现异常!",e);
        }
        return "company/company-list";
    }

    @RequestMapping("/save")
    public String save(Date birth){
        System.out.println(birth);
        return "success";
    }
    @PostMapping("upload")
    public String upload(HttpServletRequest request, String username, MultipartFile photo) throws IOException {
        System.out.println("用户名：" + username);
        //传到webapp需要绝对路径
        //String path = "D:\\java143\\BaiMing\\clonegit\\export_parent\\export_web_manager\\src\\main\\webapp\\image";
        //1.获取服务器上的真实地址
        String realPath = request.getSession().getServletContext().getRealPath("/upload");
        //2.获取上传文件的名字
        String filename = photo.getOriginalFilename();
        //3.写到服务器上
        photo.transferTo(new File(realPath + "/" + filename));
        return "success";
    }

    @RequestMapping("toAdd")
    public String toAdd(){
       return "company/company-add";
    }
    /**
     * 添加
     * 功能入口：在company-add.jsp点击保存
     * 请求地址：http://localhost:8080/company/edit
     * 请求参数：name,licenseId,city...
     * 响应地址：
     *    去到列表重新查询显示添加的数据；
     *    最好用重定向
     *
     * 小结：添加、修改、删除操作成功后最好用重定向到列表；其他都用转发。
     */
  @RequestMapping("edit")
    public String edit(Company company) {//封装添加的属性 封装请求参数
      //判断主键是否为空,如果为空为添加,否则为修改
      if (StringUtils.isEmpty(company.getId())) {
          companyService.save(company);
      }else{
          companyService.update(company);

      }

      return "redirect:/company/list";
  }

  @RequestMapping("toUpdate")
    public String toUpdate(String id,Model model){
      Company company= companyService.findById(id);
      //存储查询结果
      model.addAttribute("company",company);

      return "company/company-update";
  }

   @RequestMapping("delete")
    public String delete(String id){
      //删除数据工具id
      companyService.delete(id);
      //返回
      return "redirect:/company/list";
  }

    public void setCompanyService(CompanyService companyService) {
        this.companyService = companyService;
    }
}


